home *** CD-ROM | disk | FTP | other *** search
/ ASME's Mechanical Engine…ing Toolkit 1997 December / ASME's Mechanical Engineering Toolkit 1997 December.iso / c_lang / super_c.lzh / SORTL.C < prev    next >
Text File  |  1980-01-01  |  2KB  |  49 lines

  1. /*                  Sort Lines
  2.  
  3.         This file contains the function that sorts the lines that
  4.         rsort.c read in.
  5. */
  6.  
  7. #include <stdio.h>
  8. #include <string.h>
  9. #include "rsort.h"
  10.  
  11. /*      sortLines()
  12.  
  13.         Function: Sort the lPtr array according to the lines pointed
  14.         to by lPtr[].start; but sort from the column pointed to by
  15.         lPtr[].sortAt.
  16.  
  17.         Algorithm: A selection sort. The smallest item is found and
  18.         swaped with the first entry, then the smallest of the remaining
  19.         items is found, then... Until the entire array is sorted.
  20.  
  21.         Comments: strcmp() is used to compare lines, which defines
  22.         what we mean by "sorted." There are other definitions that
  23.         could make sense here, from fairly simple ones like descending
  24.         order to much more exotic ones.
  25. */
  26.  
  27. sortLines()
  28.  
  29. {
  30.         struct linePtr *sortLPtr;       /* Start of unsorted lines. */
  31.         struct linePtr *srchLPtr;       /* Line being checked now. */
  32.         struct linePtr *lowLPtr;        /* Lowest line found so far. */
  33.         struct linePtr newLPtr;         /* Temp for swapping sort/low. */
  34.  
  35.         /* For each line in the array... */
  36.         for (sortLPtr = lPtr; sortLPtr < nextLPtr; sortLPtr++) {
  37.                 /* Find the lowest remaining line. */
  38.                 for (lowLPtr = srchLPtr = sortLPtr;
  39.                      srchLPtr < nextLPtr; srchLPtr++)
  40.                         if (strcmp(lowLPtr->sortAt,srchLPtr->sortAt) > 0)
  41.                                 lowLPtr = srchLPtr;
  42.                 /* Swap it with the first unsorted line. */
  43.                 newLPtr = *sortLPtr;
  44.                 *sortLPtr = *lowLPtr;
  45.                 *lowLPtr = newLPtr;
  46.         };
  47. }
  48.  
  49.